package com.bytecodezz.app.framework.base.binding

import android.os.Bundle
import android.view.View
import androidx.viewbinding.ViewBinding
import com.bytecodezz.app.framework.base.general.BaseActivity

/**
 * @author: bytecodezz
 * @version: 1.0
 * @time: 2021/7/5 16:52
 * @package: com.bytecodezz.app.framework.base.binding
 *
 * @description: 支持ViewBinding的Activity基类
 * @use: 覆盖 onCreateViewBinding 方法，返回对应 ViewBinding
 * 如果不需要 ViewBinding 功能,实现 generateContentView(): Int? 返回对应布局ID即可
 */
abstract class BaseViewActivity<B : ViewBinding> : BaseActivity() {
    protected val binding by lazy {
        onCreateViewBinding()
    }

    override fun generateContentView(savedInstanceState: Bundle?): View? {
        return binding!!.root
    }

    /**
     * 如果需要使用ViewBinding功能，请不要重写该方法，需要重写 onCreateViewBinding方法并返回对应的ViewBinding
     * 如果不需要使用ViewBinding功能，请重写该方法，并返回布局id
     */
    override fun generateContentView(): Int? {
        return null
    }

    /**
     * 当需要使用ViewBinding功能的时候，只重写该方法即可，返回示例如下：
     * ActivityTestBinding.inflate(layoutInflater)
     */
    protected open fun onCreateViewBinding(): B? {
        return null
    }
}